/*     */ package com.zimbra.cs.zimlet;
/*     */ 
/*     */ import java.util.ArrayList;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class Version
/*     */   implements Comparable<Version>
/*     */ {
/*     */   ArrayList<Integer> mTokens;
/*     */   String mVer;
/*     */   
/*     */   public Version(Version v)
/*     */   {
/*  43 */     set(v);
/*     */   }
/*     */   
/*     */   public Version(String str) {
/*  47 */     parse(str);
/*     */   }
/*     */   
/*     */   public Version(int[] v) {
/*  51 */     int depth = v.length;
/*  52 */     this.mTokens = new ArrayList();
/*  53 */     for (int i = 0; i < depth; i++) {
/*  54 */       this.mTokens.add(Integer.valueOf(v[i]));
/*     */     }
/*     */   }
/*     */   
/*     */   public void parse(String str) {
/*  59 */     String[] tokens = str.split("\\.|_");
/*  60 */     int depth = tokens.length;
/*  61 */     this.mTokens = new ArrayList();
/*  62 */     for (int i = 0; i < depth; i++) {
/*  63 */       this.mTokens.add(Integer.valueOf(Integer.parseInt(tokens[i])));
/*     */     }
/*  65 */     this.mVer = str;
/*     */   }
/*     */   
/*     */   public boolean equals(Object obj) {
/*  69 */     if (!(obj instanceof Version)) {
/*  70 */       return false;
/*     */     }
/*  72 */     Version v = (Version)obj;
/*  73 */     if (this.mTokens.size() != v.mTokens.size()) {
/*  74 */       return false;
/*     */     }
/*  76 */     return compareTo(v) == 0;
/*     */   }
/*     */   
/*     */   public int compareTo(Version v) {
/*  80 */     int d = 0;
/*  81 */     int myDepth = this.mTokens.size();
/*  82 */     int yourDepth = v.mTokens.size();
/*     */     for (;;) {
/*  84 */       if ((myDepth == d) || (yourDepth == d)) {
/*  85 */         return myDepth - yourDepth;
/*     */       }
/*     */       
/*  88 */       Integer mine = (Integer)this.mTokens.get(d);
/*  89 */       Integer yours = (Integer)v.mTokens.get(d);
/*  90 */       if (!mine.equals(yours)) {
/*  91 */         return mine.intValue() - yours.intValue();
/*     */       }
/*  93 */       d++;
/*     */     }
/*     */   }
/*     */   
/*     */   public String toString() {
/*  98 */     if (this.mVer != null)
/*  99 */       return this.mVer;
/* 100 */     StringBuffer buf = new StringBuffer("");
/* 101 */     for (int i = 0; i < this.mTokens.size(); i++) {
/* 102 */       if (buf.length() > 0) buf.append(".");
/* 103 */       buf.append(this.mTokens.get(i));
/*     */     }
/* 105 */     return buf.toString();
/*     */   }
/*     */   
/*     */   public void set(Version v) {
/* 109 */     this.mTokens = ((ArrayList)v.mTokens.clone());
/* 110 */     this.mVer = v.mVer;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */   public void decrement()
/*     */   {
/* 117 */     this.mVer = null;
/* 118 */     int lastToken = this.mTokens.size() - 1;
/* 119 */     if (lastToken >= 0) {
/* 120 */       int tok = ((Integer)this.mTokens.remove(lastToken)).intValue();
/* 121 */       tok--;
/* 122 */       this.mTokens.add(lastToken, Integer.valueOf(tok));
/*     */     }
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */   public void increment()
/*     */   {
/* 130 */     this.mVer = null;
/* 131 */     int lastToken = this.mTokens.size() - 1;
/* 132 */     if (lastToken >= 0) {
/* 133 */       int tok = ((Integer)this.mTokens.remove(lastToken)).intValue();
/* 134 */       tok++;
/* 135 */       this.mTokens.add(lastToken, Integer.valueOf(tok));
/*     */     }
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */   public void incrementMinor()
/*     */   {
/* 143 */     this.mVer = null;
/* 144 */     this.mTokens.add(Integer.valueOf(1));
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public void increment(Version before)
/*     */   {
/* 156 */     if (compareTo(before) >= 0) {
/* 157 */       throw new IllegalArgumentException(toString() + " >= " + before.toString());
/*     */     }
/* 159 */     Version v = new Version(this);
/* 160 */     v.increment();
/* 161 */     if (v.compareTo(before) > 0) {
/* 162 */       v.set(before);
/* 163 */       v.decrement();
/* 164 */       v.incrementMinor();
/* 165 */       set(v);
/* 166 */     } else if (v.equals(before)) {
/* 167 */       incrementMinor();
/*     */     } else {
/* 169 */       set(v);
/*     */     }
/*     */   }
/*     */   
/*     */   public Version createNext() {
/* 174 */     Version instance = new Version(this);
/* 175 */     instance.increment();
/* 176 */     return instance;
/*     */   }
/*     */   
/*     */   public Version createNext(Version before) {
/* 180 */     Version instance = new Version(this);
/* 181 */     instance.increment(before);
/* 182 */     return instance;
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/zimlet/Version.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */